package com.xujie.sportsmeeting.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * 项目统计VO
 */
@Data
@Schema(description = "项目统计信息")
public class EventStatisticsVO {

    @Schema(description = "项目ID")
    private Long eventId;

    @Schema(description = "项目名称")
    private String eventName;

    @Schema(description = "项目编码")
    private String eventCode;

    @Schema(description = "项目类型")
    private String eventType;

    @Schema(description = "性别限制")
    private String genderLimit;

    @Schema(description = "最大报名人数")
    private Integer maxParticipants;

    @Schema(description = "实际报名人数")
    private Integer actualRegistrations;

    @Schema(description = "报名率")
    private BigDecimal registrationRate;

    @Schema(description = "已录入成绩人数")
    private Integer scoreRecordedCount;

    @Schema(description = "成绩录入率")
    private BigDecimal scoreRecordRate;

    @Schema(description = "决赛成绩数")
    private Integer finalScoreCount;

    @Schema(description = "预赛成绩数")
    private Integer preliminaryScoreCount;

    @Schema(description = "最佳成绩")
    private String bestScore;

    @Schema(description = "最佳成绩运动员")
    private String bestScoreAthlete;

    @Schema(description = "平均成绩")
    private String averageScore;

    @Schema(description = "成绩标准差")
    private BigDecimal scoreStandardDeviation;

    @Schema(description = "参与院系数")
    private Integer participatingDepartments;

    @Schema(description = "参与班级数")
    private Integer participatingClasses;

    @Schema(description = "是否破纪录")
    private Boolean recordBroken;

    @Schema(description = "纪录保持者")
    private String recordHolder;

    @Schema(description = "纪录成绩")
    private String recordScore;

    @Schema(description = "热门程度")
    private BigDecimal popularityScore;

    @Schema(description = "竞争激烈程度")
    private BigDecimal competitionIntensity;

    @Schema(description = "院系参与分布")
    private List<DepartmentParticipationVO> departmentDistribution;

    @Schema(description = "成绩分布统计")
    private ScoreDistributionVO scoreDistribution;

    @Schema(description = "排名变化趋势")
    private List<RankingChangeVO> rankingTrends;

    @Schema(description = "历史最佳成绩列表")
    private List<HistoricalBestVO> historicalBests;
}
